/*
 *  factory.h
 *  mini
 *
 *  Created by jin on 1/1/11.
 *  Copyright 2011 cs. All rights reserved.
 *
 */

#ifndef INCLUDED_FACTORY_H
#define INCLUDED_FACTORY_H

class AppBase;
class Window;

class AppImpBase;
class WindowImpBase;
class Graphic2D;

class Factory
{
public:
    static Factory& Instance();
    virtual ~Factory();

    virtual AppImpBase* CreateAppImp(AppBase* app) = 0;
    virtual WindowImpBase* CreateWindowImp(Window* win) = 0;
};

#define FACTORY Factory::Instance()

#endif  // INCLUDED_FACTORY_H
